#!/bin/bash
# -*- coding: utf-8 -*-
# Script para percorrer os diretórios de submissões do Susy, 
# recuperar cada arquivo .c, renomeá-lo para o formato T-raXXXXXX-labYY, 
# onde XXXXXX representa o RA do aluno, YY o número do Lab e T a turma 
# do aluno. O script salva os arquivos no diretório saida, dentro 
# do diretório onde descompatou o pacote .zip
# Autor original: Luciano Chaves
# 
# Script gera html com resultado da submissão do aluno e com o código
# do aluno.
# Modificacao por Flavio Kubota<flaviokubota@gmail.com>

if [ $# -ne 1 ]; then
    echo "Usage: ./getAllCodes.sh ARQUIVO.ZIP (recuperado do Susy)";
    exit;
fi;

ZIPFILE=$1

# Descompactando o arquivo zip para o diretório local em uma pasta com o mesmo nome
LOCAL_DIR="$(echo ${ZIPFILE} | rev | cut -f 1 -d "/" | rev | cut -f 1 -d ".")";
NUM_LAB=$(echo ${LOCAL_DIR} | cut -f 2 -d "_" | cut -c-2);
mkdir ${LOCAL_DIR};
unzip -q ${ZIPFILE} -d ${LOCAL_DIR};

INITIAL_PWD=$(pwd);

# utilitario que converte o codigo em c para html
make 
C2HTML=$INITIAL_PWD/cpp2html

cd ${LOCAL_DIR}
mkdir saida -p

# cria index com link para todas as paginas
INDEX_HTML=${INITIAL_PWD}/${LOCAL_DIR}/saida/index.html
echo "<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /><link type=\"text/css\" rel=\"stylesheet\" href=\"style.css\" /></HEAD><BODY>" > $INDEX_HTML

# folha de estilo css para o highlighting
echo ".keyword{color:rgb(128,0,0);}" >> saida/style.css
echo ".comment{color:rgb(0,128,0);}" >> saida/style.css
echo ".number{color:rgb(0,0,255);}" >> saida/style.css
echo ".command{color:rgb(0,0,0);font-weight:bold;}" >> saida/style.css
echo ".pp{color:rgb(0,128,0);}" >> saida/style.css
echo ".strings{color:rgb(255,0,0);}" >> saida/style.css

cd subs

# Criacao do index e armazenamento dos RA's para criação dos links das páginas
N=0
list[0]=""
# Percorrendo cada turma e, dentro de cada turma percorrendo cada aluno.
TURMAS=$(ls);
NUM_TURMAS=$(echo ${TURMAS} | wc -w);
for T in $(seq 1 ${NUM_TURMAS}); do
    TURMA=$(echo ${TURMAS} | cut -f ${T} -d " ");
    
    # Entrando no diretório de cada turma
    cd ${TURMA};

    ALUNOS=$(ls);
    NUM_ALUNOS=$(echo ${ALUNOS} | wc -w);
    for A in $(seq 1 ${NUM_ALUNOS}); do
        ALUNO=$(echo ${ALUNOS} | cut -f ${A} -d " ");
        if [ "${ALUNO}" == "LOG" ]; then
            continue;
        fi

	list[$N]=$ALUNO
	N=$(expr $N + 1);

	echo "<a href='${ALUNO}-lab${NUM_LAB}.html'>"$ALUNO"</a><br/>" >> $INDEX_HTML
	
    done;
    cd ..
done;
echo "</BODY></HTML>" >> $INDEX_HTML

# quantidade total de alunos
TOTAL=$N

N=0
link_anterior='index.html'
# Percorrendo cada turma e, dentro de cada turma percorrendo cada aluno.
TURMAS=$(ls);
NUM_TURMAS=$(echo ${TURMAS} | wc -w);
for T in $(seq 1 ${NUM_TURMAS}); do
    TURMA=$(echo ${TURMAS} | cut -f ${T} -d " ");
    
    # Entrando no diretório de cada turma
    cd ${TURMA};

    ALUNOS=$(ls);
    NUM_ALUNOS=$(echo ${ALUNOS} | wc -w);
    for A in $(seq 1 ${NUM_ALUNOS}); do
        ALUNO=$(echo ${ALUNOS} | cut -f ${A} -d " ");
        if [ "${ALUNO}" == "LOG" ]; then
            continue;
        fi

	# link para o proximo aluno / ultimo link vai para o index 
	N=$(expr $N + 1);
	if [ $N -eq $TOTAL ] ; then
	    link_proximo='index.html'	   	    
	else
	    link_proximo=${list[$N]}-lab${NUM_LAB}.html
	fi;

        # Entrando no diretório de cada aluno
        cd ${ALUNO} 
            # Agora que estamos dentro do diretório de cada aluno, vamos copiar o arquivo labYY.c de cada um dele para o diretorio raiz, renomeando o mesmo.
            cp $(ls -1 *.c | head -n 1) ${INITIAL_PWD}/${LOCAL_DIR}/saida/${TURMA}-${ALUNO}-lab${NUM_LAB}.c

	    # pagina html do aluno
	    HTML_OUT=${ALUNO}-lab${NUM_LAB}.html
	    rm $HTML_OUT -rf
	    touch $HTML_OUT
	    
	    # Gera pagina
	    echo "<HTML><HEAD><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /><link type=\"text/css\" rel=\"stylesheet\" href=\"style.css\" /></HEAD><BODY>" >> $HTML_OUT
	    echo "<div style='border: 1px solid #000000;position:fixed;top:0px;left:0px;background-color:#FFFFFF;'><a href='"$link_anterior"'>Anterior</a>&nbsp;&nbsp;&nbsp;<a href='"$link_proximo"'>Proximo</a>&nbsp;&nbsp;&nbsp;<a href="\#codigo">Codigo</a>&nbsp;&nbsp;&nbsp;<a href='index.html'>index</a>" >> $HTML_OUT
	    echo "</div>" >> $HTML_OUT
	    echo "<br/><h3>" >> $HTML_OUT
	    
	    # atraves de regexp pega o resultado da submissao do arquivo consulta.html do susy
	    cat consulta.html | sed -n -e ":a" -e "$ s/\n//gp;N;b a" | sed -e 's/.*<H3>//g' | sed -e 's/<P><B>Fim de processamento.*$//g' >> $HTML_OUT

	    # faz a conversao do codigo c para pagina html
	    echo "<a name='codigo' />" >> $HTML_OUT
	    $C2HTML ${INITIAL_PWD}/${LOCAL_DIR}/saida/${TURMA}-${ALUNO}-lab${NUM_LAB}.c >> $HTML_OUT
	    echo "</BODY></HTML>" >> $HTML_OUT

	    link_anterior=${ALUNO}-lab${NUM_LAB}.html
	    
	    # copia pagina para diretorio saida
	    cp  $HTML_OUT ${INITIAL_PWD}/${LOCAL_DIR}/saida/
        cd ..
    done;
    cd ..
done;

cd ../saida/

rm *especial* -rf;

cd ..
rm -rf ${LOCAL_DIR}
cd ${INITIAL_PWD}
